#ifndef DTT_SCENE_H_
#define DTT_SCENE_H_

#include <vector>
#include "render_system.h"
#include "utility.h"

class DTTScene : public Scene
{
public:
    DTTScene();
    virtual void init();

    // event
    virtual void onRender();
    virtual void onSizeChanged(int iwidth, int iHeight);
    virtual void onKeyboard(unsigned char key, int x, int y);
    virtual void onSpecialKeyPressed(int key, int x, int y);

    virtual void onMouseMove(int x, int y);
    virtual void onMouseButtonEvent(int button, int state, int x, int y);

    void rotate(float x/*, float y, float z*/);

private:
    void _shaderInit();
    void _vboInit();
    void _textureInit();

private:
    GPUProgram          _program;
    VertexArrayObject   _vao;

    BufferObjectPtr              _pIndexBuffer;
    //std::vector<BufferObjectPtr> _vboArray;
    //std::vector<Texture2DPtr>    _tex2DArray;
    std::vector<Texture3DPtr>    _tex3DArray;
    Trackball                    _trackball;
    float                        _LengthThreshold;
};

#endif